Images are rendered from an underlying content source. Many content sources allow images to be rendered at a wide variety of resolutions, or at arbitrarily high resolutions. However, placing an image on screen can take a long time, either because rendering the image is computationally intense, or because, due to input/output (I/O) response time, it may take a long time to download an image from the network or slower local storage device. Thus, rendering can take a considerable amount of time. In many cases, the image content that is to be displayed is actually a collection of images (e.g., a set of many images that are responsive to an image search). Since each image in the collection has its own source that has to be rendered separately, the time involved in rendering a collection of images is multiplied many-fold as compared with rendering a single image.
From the perspective of providing a high quality user experience, there are, in general, two ways of addressing the time it takes to render an image. One way is to pre-render the images before they are requested. This approach involves anticipating what images will be requested, and at what resolutions. It also involves storing a large number of pre-rendered images, and devoting computational resources to rendering images that may or may not be requested at some point in the future. Moreover, if the pre-rendered images are high-resolution, then—although the delay in rendering the image is avoided—a delay could still result from the amount of time that it takes to transmit a high resolution image. When a collection of high resolution images is involved, then again this delay may be increased many-fold.
Another way to address the time it takes to render the image is to render the image on demand, and to tell the user that he or she will have to wait while the image is being rendered. When this technique is used, the user might be shown a message telling him or her to wait while the image is rendered, or might be shown a symbol or animation (e.g., sands falling through an hourglass, hands moving on a clock, etc.) while the image is rendered. This technique generally results in a low-quality user experience.
Some systems use a limited form of pre-rendering. For example, images might be stored in two forms: a high resolution image that involves a large amount of data, and a small thumbnail image at a very low resolution. A drawback of this approach is that it forces a display system to make a choice between showing a low resolution thumbnail, or showing a high resolution image that takes can take a long time to transmit or to draw on a display.